use super::crypt_algid::CRYPT_MD_AlgId;
use super::crypt_types::CRYPT_EAL_LibCtx;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct EAL_MdCtx {
    _unused: [u8; 0],
}
pub type CRYPT_EAL_MdCTX = EAL_MdCtx;
unsafe extern "C" {
    pub fn CRYPT_EAL_MdNewCtx(id: CRYPT_MD_AlgId) -> *mut CRYPT_EAL_MdCTX;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_ProviderMdNewCtx(
        libCtx: *mut CRYPT_EAL_LibCtx,
        algId: i32,
        attrName: *const ::std::os::raw::c_char,
    ) -> *mut CRYPT_EAL_MdCTX;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MdIsValidAlgId(id: CRYPT_MD_AlgId) -> bool;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MdGetId(ctx: *mut CRYPT_EAL_MdCTX) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MdCopyCtx(to: *mut CRYPT_EAL_MdCTX, from: *const CRYPT_EAL_MdCTX) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MdDupCtx(ctx: *const CRYPT_EAL_MdCTX) -> *mut CRYPT_EAL_MdCTX;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MdFreeCtx(ctx: *mut CRYPT_EAL_MdCTX);
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MdInit(ctx: *mut CRYPT_EAL_MdCTX) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MdUpdate(ctx: *mut CRYPT_EAL_MdCTX, data: *const u8, len: u32) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MdSqueeze(ctx: *mut CRYPT_EAL_MdCTX, out: *mut u8, len: u32) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MdFinal(ctx: *mut CRYPT_EAL_MdCTX, out: *mut u8, len: *mut u32) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MdGetDigestSize(id: CRYPT_MD_AlgId) -> u32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_Md(
        id: CRYPT_MD_AlgId,
        in_: *const u8,
        inLen: u32,
        out: *mut u8,
        outLen: *mut u32,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_ProviderMd(
        libCtx: *mut CRYPT_EAL_LibCtx,
        id: CRYPT_MD_AlgId,
        attrName: *const ::std::os::raw::c_char,
        in_: *const u8,
        inLen: u32,
        out: *mut u8,
        outLen: *mut u32,
    ) -> i32;
}
unsafe extern "C" {
    pub fn CRYPT_EAL_MdDeinit(ctx: *mut CRYPT_EAL_MdCTX) -> i32;
}
